import Vue from "vue";
import App from "./App.vue";

// 设置为 false 以阻止 vue 在启动时生成生产提示。
Vue.config.productionTip = false;

// 需求将所有配置对象上的都进行+1,
// 解决：可以通过自定义合并策略来对所有组件配置对象进行修改
Vue.config.optionMergeStrategies.a = function (parent, a, vm) {
	// 每一个组件每使用，回调函数调用一次
	// 注意：parent,  vm参数vue1时候使用的，现在已经删除
	// console.log(parent, a, vm);
	return a + 100;
};

// 务必在加载 Vue 之后，立即同步设置以下内容,调试工具打开，默认值：true (生产版为 false)
// Vue.config.devtools = true;

// 面试题：你是在项目上线之后，项目出现错误如何捕获？
// 方式一：如果指定区域可以使用try...catch
// 方式二：Vue.config.errorHandler(该方法可以捕获整个项目出现的错误)
// Vue.config.errorHandler = function (err, vm, info) {
// 	console.log(err, vm, info);
// 		// 在此可以发送err到我们的服务器
// 		// handle error
// 		// `info` 是 Vue 特定的错误信息，比如错误所在的生命周期钩子
// 		// 只在 2.2.0+ 可用
// };

// 扩展：warnHandler为警告，只在开发环境使用

// 使用全局事件总线
Vue.prototype.$bus = new Vue();

// 对于选项/dom用法：

// render用法：
new Vue({
	render: (h) => h(App),
}).$mount("#app");

// // el的用法：
// new Vue({
// 	el: "#app",
// 	render: (h) => h(App),
// });

// template的用法：
// new Vue({
// 	data: {
// 		msg: "hello",
// 	},
// 	// template: "<h1>{{msg}}</h1>",
// }).$mount("#app");

/*
  在Vue中,可以影响到页面显示内容的地方:
    1.在根组件的配置对象中,添加template属性
    2.在index.html中,可以书写Vue的模版代码
    3.在根组件的配置对象中,添加render属性

  渲染优先级:render>template>index.html

  注意:如果想使用template属性,必须在完整版本的Vue解析器下才能使用：在配置文件中添加：	runtimeCompiler: true,
// 在项目配置的时候，默认 npm 包导出的是运行时构建，即 runtime 版本，不支持编译 template 模板。
// vue 在初始化项目配置的时候，有两个运行环境配置的版本：Compiler 版本、Runtime 版本。
//Compiler 版本: 1.可以对 template 模板内容进行编译（包括字符串模板和可以绑定的 html 对象作为模板）
// Runtime 版本:2.使用 vue-loader 加载.vue 文件（组件文件）时，webpack 在打包过程中对模板进行了渲染。
*/
